#include "inmersiondetalles.h"

InmersionDetalles::InmersionDetalles( QWidget* parent )
: QWidget( parent )
{
    setObjectName( "inmersionDetalles" );

    QHBoxLayout* layout = new QHBoxLayout( this );
    QVBoxLayout* column1layout = new QVBoxLayout();
    QVBoxLayout* column2layout = new QVBoxLayout();
    QVBoxLayout* column3layout = new QVBoxLayout();
    QVBoxLayout* column4layout = new QVBoxLayout();
    layout->addLayout( column1layout, 1 );
    layout->addLayout( column2layout, 1 );
    layout->addLayout( column3layout, 1 );
    layout->addLayout( column4layout, 1 );
    layout->addStretch(2);

    _numero = new QLabel( this );
    _sitio = new QLabel( this );
    _ubicacion = new QLabel( this );
    _pais = new QLabel( this );
    _fecha = new QLabel( this );
    _inicio = new QLabel( this );
    _duracion = new QLabel( this );
    _fin = new QLabel( this );
    _profundidadmaxima = new QLabel( this );
    _profundidadmedia = new QLabel( this );
    _intervalosuperficie = new QLabel( this );
    _buddy = new QLabel( this );
    _viaje = new QLabel( this );
    _temperaturaaire = new QLabel( this );
    _temperaturasuperficie = new QLabel( this );
    _temperaturafondo = new QLabel( this );
    _volumenbotella = new QLabel( this );
    _presioninicial = new QLabel( this );
    _presionfinal = new QLabel( this );
    _presionconsumida = new QLabel( this );
    _lastre = new QLabel( this );
    _porcentajeo2 = new QLabel( this );
    _mod = new QLabel( this );

    QGroupBox* generalbox = new QGroupBox( trUtf8( "General" ) );
    QFormLayout* generallayout = new QFormLayout( generalbox );
    generallayout->addRow( trUtf8("Número"), _numero );
    generallayout->addRow( trUtf8("Buddy"), _buddy );
    generallayout->addRow( trUtf8("Viaje"), _viaje );
    generalbox->setLayout( generallayout );

    QGroupBox* equipobox = new QGroupBox( trUtf8( "Equipo" ) );
    QFormLayout* equipolayout = new QFormLayout( equipobox );
    equipolayout->addRow( trUtf8("Lastre"), _lastre );
    equipolayout->addRow( trUtf8("Botella"), _volumenbotella );
    equipobox->setLayout( equipolayout );

    QGroupBox* fechahorabox = new QGroupBox( trUtf8( "Fecha/Hora" ) );
    QFormLayout* fechahoralayout = new QFormLayout( fechahorabox );
    fechahoralayout->addRow( trUtf8("Fecha"), _fecha );
    fechahoralayout->addRow( trUtf8("Inicio"), _inicio );
    fechahoralayout->addRow( trUtf8("Duración"), _duracion );
    fechahoralayout->addRow( trUtf8("Fin"), _fin );
    fechahoralayout->addRow( trUtf8("Intervalo superficie"), _intervalosuperficie );
    fechahorabox->setLayout( fechahoralayout );

    QGroupBox* localizacionbox = new QGroupBox( trUtf8( "Localización" ) );
    QFormLayout* localizacionlayout = new QFormLayout( localizacionbox );
    localizacionlayout->addRow( trUtf8("Sitio"), _sitio );
    localizacionlayout->addRow( trUtf8("Ubicación"), _ubicacion );
    localizacionlayout->addRow( trUtf8("País"), _pais );
    localizacionbox->setLayout( localizacionlayout );

    QGroupBox* mezclabox = new QGroupBox( trUtf8( "Mezcla" ) );
    QFormLayout* mezclalayout = new QFormLayout( mezclabox );
    mezclalayout->addRow( trUtf8("Oxígeno"), _porcentajeo2 );
    mezclalayout->addRow( trUtf8("MOD"), _mod );
    mezclabox->setLayout( mezclalayout );

    QGroupBox* profundidadbox = new QGroupBox( trUtf8( "Profundidad" ) );
    QFormLayout* profundidadlayout = new QFormLayout( profundidadbox );
    profundidadlayout->addRow( trUtf8("Máxima"), _profundidadmaxima );
    profundidadlayout->addRow( trUtf8("Media"), _profundidadmedia );
    profundidadbox->setLayout( profundidadlayout );

    QGroupBox* temperaturabox = new QGroupBox( trUtf8( "Temperatura" ) );
    QFormLayout* temperaturalayout = new QFormLayout( temperaturabox );
    temperaturalayout->addRow( trUtf8("Aire"), _temperaturaaire );
    temperaturalayout->addRow( trUtf8("Superficie"), _temperaturasuperficie );
    temperaturalayout->addRow( trUtf8("Fondo"), _temperaturafondo );
    temperaturabox->setLayout( temperaturalayout );

    QGroupBox* presionbox = new QGroupBox( trUtf8( "Presión" ) );
    QFormLayout* presionlayout = new QFormLayout( presionbox );
    presionlayout->addRow( trUtf8("Inicial"), _presioninicial );
    presionlayout->addRow( trUtf8("Final"), _presionfinal );
    presionlayout->addRow( trUtf8("Consumida"), _presionconsumida );
    presionbox->setLayout( presionlayout );

    column1layout->addWidget( generalbox, 1 );
    column1layout->addWidget( equipobox, 1 );
    column1layout->addStretch(2);

    column2layout->addWidget( fechahorabox, 1 );
    column2layout->addWidget( localizacionbox, 1 );
    column2layout->addStretch(2);

    column3layout->addWidget( profundidadbox, 1 );
    column3layout->addWidget( temperaturabox, 1 );
    column3layout->addStretch(2);

    column4layout->addWidget( presionbox, 1 );
    column4layout->addWidget( mezclabox, 1 );
    column4layout->addStretch(2);

    setLayout( layout );
}

void InmersionDetalles::showDetalles( Inmersion* inmersion )
{
    if( !inmersion )
    {
        showEmpty();
        return;
    }
    _numero->setText( QString("%1").arg( inmersion->numero() ) );
    _sitio->setText( inmersion->sitio()->nombre() );
    _ubicacion->setText( inmersion->sitio()->ubicacion()->nombre() );
    _pais->setText( inmersion->sitio()->ubicacion()->pais()->nombre() );
    _fecha->setText( inmersion->inicio().toString( Default::dateformat ) );
    _inicio->setText( inmersion->inicio().toString( Default::timeformat ) );
    _duracion->setText( QString( "%1'%2\"" ).arg( inmersion->duracion()/60 ).arg( (inmersion->duracion()%60), 2, 10, QChar('0') ) );
    _fin->setText( inmersion->inicio().addSecs( inmersion->duracion() ).toString( Default::timeformat ) );
    _profundidadmaxima->setText( QString("%L1%2").arg( inmersion->profundidadMaxima() ).arg( Unidad::profundidad ) );
    _profundidadmedia->setText( QString("%L1%2").arg( inmersion->profundidadMedia() ).arg( Unidad::profundidad ) );
    _intervalosuperficie->setText( inmersion->intervaloSuperficie().isNull() ? "-" : QTime(0,0,0).addSecs( inmersion->intervaloSuperficie().value() ).toString( Default::timeformat ) );
    _buddy->setText( inmersion->buddy() ? inmersion->buddy()->nombre() : "-" );
    _viaje->setText( inmersion->viaje() ? inmersion->viaje()->destino() : "-" );
    _temperaturaaire->setText( inmersion->temperaturaAire().isNull() ? "-" : QString( "%1%2" ).arg( inmersion->temperaturaAire().value() ).arg( Unidad::temperatura ) );
    _temperaturasuperficie->setText( inmersion->temperaturaSuperficie().isNull() ? "-" : QString( "%1%2" ).arg( inmersion->temperaturaSuperficie().value() ).arg( Unidad::temperatura ) );
    _temperaturafondo->setText( inmersion->temperaturaFondo().isNull() ? "-" : QString( "%1%2" ).arg( inmersion->temperaturaFondo().value() ).arg( Unidad::temperatura ) );
    _volumenbotella->setText( inmersion->volumenBotella().isNull() ? "-" : QString( "%1%2" ).arg( inmersion->volumenBotella().value() ).arg( Unidad::volumen ) );
    _presioninicial->setText( inmersion->presionInicial().isNull() ? "-" : QString( "%1%2" ).arg( inmersion->presionInicial().value() ).arg( Unidad::presion ) );
    _presionfinal->setText( inmersion->presionFinal().isNull() ? "-" : QString( "%1%2" ).arg( inmersion->presionFinal().value() ).arg( Unidad::presion ) );
    _presionconsumida->setText( inmersion->presionConsumida().isNull() ? "-" : QString( "%1%2" ).arg( inmersion->presionConsumida().value() ).arg( Unidad::presion ) );
    _lastre->setText( QString( "%L1%2" ).arg( inmersion->lastre() ).arg( Unidad::peso ) );
    _porcentajeo2->setText( trUtf8( "%L1%2 (%3)" ).arg( inmersion->porcentajeO2() ).arg( Unidad::porcentaje ).arg( (inmersion->porcentajeO2()==21) ? "aire" : (inmersion->porcentajeO2()>21) ? "nitrox" : "-" ) );
    _mod->setText( QString( "%L1%2" ).arg( QLocale().toString( inmersion->mod(), 'f', 2 ) ).arg( Unidad::profundidad ) );
}

void InmersionDetalles::showEmpty()
{
    _numero->clear();
    _sitio->clear();
    _ubicacion->clear();
    _pais->clear();
    _fecha->clear();
    _inicio->clear();
    _duracion->clear();
    _fin->clear();
    _profundidadmaxima->clear();
    _profundidadmedia->clear();
    _intervalosuperficie->clear();
    _buddy->clear();
    _viaje->clear();
    _temperaturaaire->clear();
    _temperaturasuperficie->clear();
    _temperaturafondo->clear();
    _volumenbotella->clear();
    _presioninicial->clear();
    _presionfinal->clear();
    _presionconsumida->clear();
    _lastre->clear();
    _porcentajeo2->clear();
    _mod->clear();
}
